// dep:
//   1）收集依赖，添加watcher
//   2）通知所有的watcher

// 什么时候收集依赖，添加watcher：
//    当模板中使用到数据时，收集依赖，模板中使用数据会走getter
//    也就是说在getter中收集依赖，添加观察者
// 什么时候通知watcher
//    当data中的数据变化了，走setter，也就是说在setter中需要通知观察者

class Dep{
  constructor() {
    // subs存储所有的观察者
    this.subs = [];
  }
  // 添加观察者
  addSub(sub) {
    if (sub && sub.update) {
      this.subs.push(sub)
    }
  }
  // 通知观察者
  notify() {
    this.subs.forEach(sub => {
      sub.update(); // 执行update就可以更新视图
    })
  }
}